﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using RedesII_DTL;
using System.Data.Common;

namespace RedesII_DAL
{
    public class EquipmentServiceDao
    {
        //TODO: Ver com o cristiano como fica essa aqui
        public EquipmentServiceDto GetById(int id)
        {
            string query = "SELECT ID_EQUIPAMENTO, ID_SERVICO, DATAHORA_CRIACAO,DATAHORA_ALTERACAO FROM WMI_EQUIPAMENTOS WHERE ID_EQUIPAMENTO = " + id.ToString();
            var service = BuscaRegistro(query);
            if (service != null)
            {
                return service;
            }
            else
                return null;
        }

        public bool InsertEquipmentService(EquipmentServiceDto service)
        {
            string query =
                String.Format("INSERT INTO WMI_SERVICOEQUIPAMENTO (ID_SERVICO,ID_EQUIPAMENTO,DATAHORA_CRIACAO) VALUES ({0},{1},'{2}')",
                service._IdServico,service._IdEquipamento,service._DataHoraCriacao);
            return ExecutaComando(query);
        }


        protected EquipmentServiceDto BuscaRegistro(string query)
        {
            // criando a conexão com o banco
            DaoFactory factory = new DaoFactory();
            DbConnection connection = factory.CriaConexao();
            // criando o comando que vai ser executado
            DbCommand cmd = factory.CriaComando();
            cmd.Connection = connection;
            cmd.CommandText = query;
            // abrindo a conexão
            connection.Open();
            // executando o comando e obtendo um reader (leitor de dados)
            DbDataReader reader = cmd.ExecuteReader();
            // criando um usuario
            EquipmentServiceDto service = new EquipmentServiceDto();
            // para cada registro lido pelo reader
            while (reader.Read())
            {
                service._IdServico = (int)reader["ID_SERVICO"];
                service._IdEquipamento= (int)reader["ID_EQUIPAMENTO"];
                service._DataHoraCriacao = (DateTime)reader["DATAHORA_CRIACAO"];
                service._DataHoraAlteracao = (DateTime)reader["DATAHORA_ALTERACAO"];
            }
            // fechando a conexão
            connection.Close();
            return service;
        }

        protected virtual bool ExecutaComando(string query)
        {
            DaoFactory factory = new DaoFactory();
            // criando a conexão com o banco
            DbConnection connection = factory.CriaConexao();
            // criando o comando que vai ser executado
            DbCommand cmd = factory.CriaComando();
            cmd.Connection = connection;
            cmd.CommandText = query;
            // abrindo a conexão
            connection.Open();
            // executando o comando e obtendo um reader (leitor de dados)
            int res = cmd.ExecuteNonQuery();
            // fechando a conexão
            connection.Close();
            return res > 0;
        }
    }
}
